1. Field of the Invention
This invention relates to graphics systems and, more particularly, to handling requests for display data from a frame buffer.
2. Description of the Related Art
A computer system typically relies upon its graphics system for producing visual output on the computer screen or display device. Early graphics systems were only responsible for taking what the processor produced as output and displaying it on the screen. In essence, they acted as simple translators or interfaces. Modern graphics systems, however, incorporate graphics processors with a great deal of processing power. They now act more like coprocessors rather than simple translators. This change is due to the recent increase in both the complexity and amount of data being sent to the display device. For example, modern computer displays have many more pixels, greater color depth, and are able to display more complex images with higher refresh rates than earlier models. Similarly, the images displayed are now more complex and may involve advanced techniques such as anti-aliasing and texture mapping.
As a result, without considerable processing power in the graphics system, the CPU would spend a great deal of time performing graphics calculations. This could rob the computer system of the processing power needed for performing other tasks associated with program execution and thereby dramatically reduce overall system performance. With a powerful graphics system, however, when the CPU is instructed to draw a box on the screen, the CPU is freed from having to compute the position and color of each pixel. Instead, the CPU may send a request to the video card stating, xe2x80x9cdraw a box at these coordinates.xe2x80x9d The graphics system then draws the box, freeing the processor to perform other tasks.
Generally, a graphics system in a computer is a type of video adapter that contains its own processor to boost performance levels. These processors are specialized for computing graphical transformations, so they tend to achieve better results than the general-purpose CPU used by the computer system. In addition, they free up the computer""s CPU to execute other commands while the graphics system is handling graphics computations. The popularity of graphics applications, and especially multimedia applications, has made high performance graphics systems a common feature in many new computer systems. Most computer manufacturers now bundle a high performance graphics system with their computing systems.
A modern graphics system may generally operate as follows. First, graphics data is initially read from a computer system""s main memory into the graphics system. The graphics data may include geometric primitives such as polygons (e.g., triangles), NURBS (Non-Uniform Rational B-Splines), sub-division surfaces, voxels (volume elements) and other types of data. The various types of data are typically converted into triangles (e.g., three vertices having at least position and color information). Then, transform and lighting calculation units receive and process the triangles. Transform calculations typically include changing a triangle""s coordinate axis, while lighting calculations typically determine what effect, if any, lighting has on the color of triangle""s vertices. The transformed and lit triangles may then be conveyed to a clip test/back face culling unit that determines which triangles are outside the current parameters for visibility (e.g., triangles that are off screen). These triangles are typically discarded to prevent additional system resources from being spent on non-visible triangles.
Next, the triangles that pass the clip test and back-face culling may be translated into screen space. The screen space triangles may then be forwarded to the set-up and draw processor for rasterization. Rasterization typically refers to the process of generating actual pixels (or samples) by interpolation from the vertices. The rendering process may include interpolating slopes of edges of the polygon or triangle, and then calculating pixels or samples on these edges based on these interpolated slopes. Pixels or samples may also be calculated in the interior of the polygon or triangle.
As noted above, in some cases samples are generated by the rasterization process instead of pixels. A pixel typically has a one-to-one correlation with the hardware pixels present in a display device, while samples are typically more numerous than the hardware pixel elements and need not have any direct correlation to the display device. Where pixels are generated, the pixels may be stored into a frame buffer, or possibly provided directly to refresh the display. Where samples are generated, the samples may be stored into a sample buffer or frame buffer. The samples may later be accessed and filtered to generate pixels, which may then be stored into a frame buffer, or the samples may possibly filtered to form pixels that are provided directly to refresh the display without any intervening frame buffer storage of the pixels.
A converter (e.g., a digital-to-analog converter) converts the pixels into an appropriate display signal usable by a display device. If samples are used, the samples may be read out of sample buffer or frame buffer and filtered to generate pixels, which may be stored and later conveyed to a converter. The signal from such a converter is conveyed to a display device such as a computer monitor, LCD display, or projector.
Display data (e.g., pixels or samples) is typically output from a frame buffer to an output device (e.g., a digital-to-analog converter)) for display. However, since the frame buffer may also be accessed by other device(s) in the graphics system, display accesses may adversely impact the other devices"" performance.
Various embodiments of a graphics system that is configured to handle display requests for display data in a frame buffer are disclosed. In one embodiment, a graphics system includes a frame buffer, a processing device coupled to the frame buffer and configured to access data in the frame buffer, a frame buffer interface coupled to the frame buffer, and an output controller coupled to the frame buffer interface and configured to provide display data to a display device. The output controller is configured to assert a first request for display data. The frame buffer interface is configured to receive the first request for display data from the output controller and to delay providing the first request for display data to the frame buffer if the processing device is currently requesting access to a portion of the frame buffer targeted by the first request for display data. For example, if the frame buffer includes several banks of memory and the first request for display data targets a first one of the banks, the frame buffer interface may delay providing the first request to the frame buffer if the processing device is currently requesting access to the first one of the banks.